/**
 * @file boxInfo.h
 * @author SDK_TEAM
 * @brief
 * @version 0.1
 * @date 2022-11-02
 *
 * Copyright:
 * © 2018 北京灵汐科技有限公司 版权所有。
 * 注意：以下内容均为北京灵汐科技有限公司原创，未经本公司允许，不得转载，否则将视为侵权；对于不遵守此声明或者其他违法使用以下内容者，本公司依法保留追究权。
 * © 2018 Lynxi Technologies Co., Ltd. All rights reserved.
 * NOTICE: All information contained here is, and remains the property of Lynxi.
 * This file can not be copied or distributed without the permission of Lynxi
 * Technologies Co., Ltd.
 *
 */

#pragma once

#include <cstdint>

#define BOX_MAX_NUM 128
#define TEXT_MAX_LEN 64

#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
  uint32_t xmin;             // box左边横向偏移
  uint32_t ymin;             // box上边纵向偏移
  uint32_t xmax;             // box右边横向偏移
  uint32_t ymax;             // box下边纵向偏移
  float score;               // 置信度分数
  int id;                    // ID
  char label[TEXT_MAX_LEN];  // 分类标签
} lynBox;

typedef struct {
  uint16_t boxesNum;          // box数量
  lynBox boxes[BOX_MAX_NUM];  // box信息
} lynBoxesInfo;

typedef struct {
  uint32_t xmin;             // box左边横向偏移
  uint32_t ymin;             // box上边纵向偏移
  uint32_t width;            // box宽度
  uint32_t height;           // box高度
  float score;               // 置信度分数
  int id;                    // ID
  char label[TEXT_MAX_LEN];  // 分类标签

  uint32_t maskCol;       // mask数据块列数
  uint32_t maskRow;       // mask数据块行数
} lynSegBox;

typedef struct {
  uint16_t boxesNum;          // box数量
  lynSegBox boxes[BOX_MAX_NUM];  // box信息

  uint8_t *maskData;        // mask数据块，boxes中的maskData数据的总和
  uint32_t maskDataLen;
} lynSegBoxesInfo;

typedef struct {
  float kps[17 * 3];
} lynPosePoint;

typedef struct {
  uint16_t boxesNum;          // box数量
  lynPosePoint points[BOX_MAX_NUM];
  lynBox boxes[BOX_MAX_NUM];  // box信息
} lynPoseInfo;

#ifdef __cplusplus
}
#endif
